Data discovery and generation of live data map for information privacy

ABSTRACT

Systems and methods for discovering data related to information privacy are described. A server computing system may receive data from a first computing system, the first computing system verified to store personal information of customers of an entity. The server computing system may associate a second computing system with the entity based on the data from the first computing system referencing the second computing system. The server computing system may generate a live data map for the entity, the live data map configured to include at least information about whether the first computing system and the second computing system store the personal information of the customers of the entity, the live data map used to search for the personal information in response to personal information verification requests received by the entity.

COPYRIGHT NOTICE

A portion of the disclosure of this patent document contains materialwhich is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patent documentor the patent disclosure, as it appears in the Patent and TrademarkOffice patent file or records, but otherwise reserves all copyrightrights whatsoever.

TECHNICAL FIELD

The present disclosure relates generally to data processing and morespecifically relates to discovering data related to information privacy.

BACKGROUND

The subject matter discussed in the background section should not beassumed to be prior art merely as a result of its mention in thebackground section. Similarly, a problem mentioned in the backgroundsection or associated with the subject matter of the background sectionshould not be assumed to have been previously recognized in the priorart.

In general, information privacy relates to the privacy of personalinformation and may be associated with the collection, storing, use, andsharing of the personal information. The personal information may becollected with knowledge of the subjects and may include informationthat is not publicly available. There are privacy laws that provide thesubjects of the personal information the rights to request for theinformation, to have their information removed, to control the sale oftheir data, and to prohibit the disclosure or misuse of the personalinformation, amongst other rights. Companies that collect informationfrom their customers therefore are required to provide the informationwhen requested. For example, in California, the privacy law requiresthat websites that collect user data to disclose the type of informationbeing collected, the types of third parties they might provide thatinformation to, among others. It can be difficult for a company tocomply with the request for information when the company does not evenknow what information it has collected.

BRIEF DESCRIPTION OF THE DRAWINGS

The included drawings are for illustrative purposes and serve only toprovide examples of possible structures and process operations for thedisclosed techniques. These drawings in no way limit any changes in formand detail that may be made to implementations by one skilled in the artwithout departing from the spirit and scope of the disclosure.

FIG. 1 shows a diagram of an example computing system that may be usedwith some implementations.

FIG. 2 shows a diagram of an example network environment that may beused with some implementations.

FIG. 3 shows an example diagram that includes a span of databases orsystems where personal information may be stored, in accordance withsome implementations.

FIG. 4 shows an example diagram of an information privacy complianceapplication with its data discovery and maintenance functions, inaccordance with some implementations.

FIG. 5A shows an example diagram of a data discovery module with itsthird-party service identifying operations, in accordance with someimplementations.

FIG. 5B shows an example diagram of a data discovery module with itssingle sign on (SSO) system detection operations, in accordance withsome implementations.

FIG. 5C shows an example diagram of a data discovery module with itsinferring operations, in accordance with some implementations.

FIG. 6 shows an example diagram of a discovery module with its taxonomymapping operations, in accordance with some implementations.

FIG. 7A shows an example diagram of a discovery module with live datamapping operations, in accordance with some implementations.

FIG. 7B shows an example live data map, in accordance with someimplementations.

FIG. 8A is an example flow diagram of a process that may be used toidentify third-party systems, in accordance with some implementations.

FIG. 8B is an example flow diagram of a process that may be used withfactors to infer third-party systems, in accordance with someimplementations.

FIG. 8C is an example flow diagram of an inferring process, inaccordance with some implementations.

DETAILED DESCRIPTION

Examples of systems and methods associated with data discovery and withmaintaining a live data map as related to information privacy will bedescribed with reference to some implementations. These examples arebeing provided solely to add context and aid in the understanding of thepresent disclosure. It will thus be apparent to one skilled in the artthat the techniques described herein may be practiced without some orall of these specific details. In other instances, well known processoperations have not been described in detail in order to avoidunnecessarily obscuring the present disclosure. Other applications arepossible, such that the following examples should not be taken asdefinitive or limiting either in scope or setting.

In the following detailed description, references are made to theaccompanying drawings, which form a part of the description and in whichare shown, by way of illustration, some implementations. Although theseimplementations are described in sufficient detail to enable one skilledin the art to practice the disclosure, it is understood that theseexamples are not limiting, such that other implementations may be usedand changes may be made without departing from the spirit and scope ofthe disclosure.

The described subject matter may be implemented in the context of anycomputer-implemented system, such as a software-based system, a databasesystem, a multi-tenant environment, or the like. Moreover, the describedsubject matter may be implemented in connection with two or moreseparate and distinct computer-implemented systems that cooperate andcommunicate with one another. One or more examples may be implemented innumerous ways, including as a process, an apparatus, a system, a device,a method, a computer readable medium such as a computer readable storagemedium containing computer readable instructions or computer programcode, or as a computer program product comprising a computer usablemedium having a computer readable program code embodied therein.

The disclosed implementations may include a computer-implemented methodfor performing data discovery and maintaining a live data map mayinclude receiving, by a server computing system, data from a firstcomputing system, the first computing system verified to store personalinformation of customers of an entity; associating, by the servercomputing system, a second computing system with the entity based on thedata from the first computing system referencing the second computingsystem; and generating, by the server computing system, a live data mapfor the entity, the live data map configured to include at leastinformation about whether the first computing system and the secondcomputing system store the personal information, the live data map usedto search for the personal information in response to personalinformation verification requests received by the entity.

The disclosed implementations may include a system for performing datadiscovery and maintaining a live data map as related to informationprivacy and may include one or more processors, and a non-transitorycomputer readable medium storing a plurality of instructions, which whenexecuted, cause the one or more processors of a server computing systemto receive data from a first computing system, the first computingsystem verified to store personal information of customers of an entity;associate a second computing system with the entity based on the datafrom the first computing system referencing the second computing system;and generate a live data map for the entity, the live data mapconfigured to include at least information about whether the firstcomputing system and the second computing system store the personalinformation, the live data map used to search for the personalinformation in response to personal information verification requestsreceived by the entity.

The disclosed implementations may include a computer program productcomprising computer-readable program code to be executed by one or moreprocessors of a server computing system when retrieved from anon-transitory computer-readable medium, the program code includinginstructions to receive data from a first computing system, the firstcomputing system verified to store personal information of customers ofan entity; associate a second computing system with the entity based onthe data from the first computing system referencing the secondcomputing system; and generate a live data map for the entity, the livedata map configured to include at least information about whether thefirst computing system and the second computing system store thepersonal information, the live data map used to search for the personalinformation in response to personal information verification requestsreceived by the entity.

While one or more implementations and techniques are described withreference to performing data discovery and maintaining a live data maprelated to information privacy implemented in a system having anapplication server providing a front end for an on-demand databaseservice capable of supporting multiple tenants, the one or moreimplementations and techniques are not limited to multi-tenant databasesnor deployment on application servers. Implementations may be practicedusing other database architectures, i.e., ORACLE®, DB2® by IBM and thelike without departing from the scope of the claimed subject matter.Further, some implementations may include using Hardware Security Module(HSM), a physical computing device that safeguards and manages digitalkeys for strong authentication, including, for example, the keys used toencrypt secrets associated with the data elements stored in the datastores. It may be noted that the term “data store” may refer to sourcecontrol systems, file storage, virtual file systems, non-relationaldatabases (such as NoSQL), etc. The term “database” as used herein mayrefer to any organized collection of data.

Any of the above implementations may be used alone or together with oneanother in any combination. The one or more implementations encompassedwithin this specification may also include examples that are onlypartially mentioned or alluded to or are not mentioned or alluded to atall in this brief summary or in the abstract. Although variousimplementations may have been motivated by various deficiencies with theprior art, which may be discussed or alluded to in one or more places inthe specification, the implementations do not necessarily address any ofthese deficiencies. In other words, different implementations mayaddress different deficiencies that may be discussed in thespecification. Some implementations may only partially address somedeficiencies or just one deficiency that may be discussed in thespecification, and some implementations may not address any of thesedeficiencies.

The described subject matter may be implemented in the context of anycomputer-implemented system, such as a software-based system, a databasesystem, a multi-tenant environment, or the like. Moreover, the describedsubject matter may be implemented in connection with two or moreseparate and distinct computer-implemented systems that cooperate andcommunicate with one another. One or more examples may be implemented innumerous ways, including as a process, an apparatus, a system, a device,a method, a computer readable medium such as a computer readable storagemedium containing computer readable instructions or computer programcode, or as a computer program product comprising a computer usablemedium having a computer readable program code embodied therein.

In general, personal information may include information that is sharedby or collected from an individual with knowledge of the individual. Itmay be noted that the definition of personal information may varydepending on the governing agency. For example, the California ConsumerPrivacy Act (“CCPA”) Section 1798.140(o)(1) defines personal informationas information that identifies, relates to, describes, is reasonablycapable of being associated with, or could reasonably be linked,directly or indirectly, with a particular consumer or household. TheCCPA indicates that personal information may include identifiers such asa real name, alias, postal address, unique personal identifier, onlineidentifier, internet protocol address, email address, account name,social security number, driver's license number, passport number, orother similar identifiers. Personal information may include biometricinformation, Internet or other electronic network activity information,including, but not limited to, browsing history, search history, andinformation regarding a consumer's interaction with an internet website,application, or advertisement, geolocation data, professional oremployment-related information, and education information, among others.According to the EU's General Data Protection Regulation (GDPR) Article4, ‘Personal data’ means any information relating to an identified oridentifiable natural person (‘data subject’); an identifiable naturalperson is one who can be identified, directly or indirectly, inparticular by reference to an identifier such as a name, anidentification number, location data, an online identifier or to one ormore factors specific to the physical, physiological, genetic, mental,economic, cultural or social identity of that natural person.Furthermore, the GDPR only applies to personal data processed in one oftwo ways: personal data processed wholly or partly by automated means(or, information in electronic form); and personal data processed in anon-automated manner which forms part of, or is intended to form partof, a ‘filing system’ (or, written records in a manual filing system).

Section 1798.100 (a) of the CCPA also indicates that a consumer shallhave the right to request that a business that collects a consumer'spersonal information disclose to that consumer the categories andspecific pieces of personal information the business has collected. Thismay create many challenges that need to be addressed by the businessesbecause non-compliance may result in civil actions or civil penalties.In addition, when a business is found to be non-compliant, correctionaction may need to be performed within a narrow period of time afterbeing notified of the non-compliance. Furthermore, some businesses mayuse so many different databases and other systems that they havedifficulty identifying what information they have collected and wherethe collected information is stored. As such, having a system to helpresponding to the consumers' requests and managing the collectedpersonal information is beneficial for accurate and timely response.

FIG. 1 is a diagram of an example computing system that may be used withsome implementations. In diagram 100, computing system 110 may be usedby a user to establish a connection with a server computing system. Thecomputing system 110 is only one example of a suitable computing system,such as a mobile computing system, and is not intended to suggest anylimitation as to the scope of use or functionality of the design.Neither should the computing system 110 be interpreted as having anydependency or requirement relating to any one or combination ofcomponents illustrated. The design is operational with numerous othergeneral purpose or special purpose computing systems. Examples ofwell-known computing systems, environments, and/or configurations thatmay be suitable for use with the design include, but are not limited to,personal computers, server computers, hand-held or laptop devices,multiprocessor systems, microprocessor-based systems, set top boxes,programmable consumer electronics, mini-computers, mainframe computers,distributed computing environments that include any of the above systemsor devices, and the like. For example, the computing system 110 may beimplemented as a mobile computing system such as one that is configuredto run with an operating system (e.g., iOS) developed by Apple Inc. ofCupertino, Calif. or an operating system (e.g., Android) that isdeveloped by Google Inc. of Mountain View, Calif.

Some implementations may be described in the general context ofcomputing system executable instructions, such as program modules, beingexecuted by a computer. Generally, program modules include routines,programs, objects, components, data structures, etc. that performsparticular tasks or implement particular abstract data types. Thoseskilled in the art can implement the description and/or figures hereinas computer-executable instructions, which can be embodied on any formof computing machine program product discussed below.

Some implementations may also be practiced in distributed computingenvironments where tasks are performed by remote processing devices thatare linked through a communications network. In a distributed computingenvironment, program modules may be located in both local and remotecomputer storage media including memory storage devices.

Referring to FIG. 1 , the computing system 110 may include, but are notlimited to, a processing unit 120 having one or more processing cores, asystem memory 130, and a system bus 121 that couples various systemcomponents including the system memory 130 to the processing unit 120.The system bus 121 may be any of several types of bus structuresincluding a memory bus or memory controller, a peripheral bus, and alocal bus using any of a variety of bus architectures. By way ofexample, and not limitation, such architectures include IndustryStandard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus,Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA)locale bus, and Peripheral Component Interconnect (PCI) bus also knownas Mezzanine bus.

The computing system 110 typically includes a variety of computerprogram product. Computer program product can be any available mediathat can be accessed by computing system 110 and includes both volatileand nonvolatile media, removable and non-removable media. By way ofexample, and not limitation, computer program product may storeinformation such as computer readable instructions, data structures,program modules or other data. Computer storage media include, but arenot limited to, RAM, ROM, EEPROM, flash memory or other memorytechnology, CD-ROM, digital versatile disks (DVD) or other optical diskstorage, magnetic cassettes, magnetic tape, magnetic disk storage orother magnetic storage devices, or any other medium which can be used tostore the desired information and which can be accessed by computingsystem 110. Communication media typically embodies computer readableinstructions, data structures, or program modules.

The system memory 130 may include computer storage media in the form ofvolatile and/or nonvolatile memory such as read only memory (ROM) 131and random access memory (RAM) 132. A basic input/output system (BIOS)133, containing the basic routines that help to transfer informationbetween elements within computing system 110, such as during start-up,is typically stored in ROM 131. RAM 132 typically contains data and/orprogram modules that are immediately accessible to and/or presentlybeing operated on by processing unit 120. By way of example, and notlimitation, FIG. 1 also illustrates operating system 134, applicationprograms 135, other program modules 136, and program data 137.

The computing system 110 may also include other removable/non-removablevolatile/nonvolatile computer storage media. By way of example only,FIG. 1 also illustrates a hard disk drive 141 that reads from or writesto non-removable, nonvolatile magnetic media, a magnetic disk drive 151that reads from or writes to a removable, nonvolatile magnetic disk 152,and an optical disk drive 155 that reads from or writes to a removable,nonvolatile optical disk 156 such as, for example, a CD ROM or otheroptical media. Other removable/non-removable, volatile/nonvolatilecomputer storage media that can be used in the exemplary operatingenvironment include, but are not limited to, USB drives and devices,magnetic tape cassettes, flash memory cards, digital versatile disks,digital video tape, solid state RAM, solid state ROM, and the like. Thehard disk drive 141 is typically connected to the system bus 121 througha non-removable memory interface such as interface 140, and magneticdisk drive 151 and optical disk drive 155 are typically connected to thesystem bus 121 by a removable memory interface, such as interface 150.

The drives and their associated computer storage media discussed aboveand illustrated in FIG. 1 , provide storage of computer readableinstructions, data structures, program modules and other data for thecomputing system 110. In FIG. 1 , for example, hard disk drive 141 isillustrated as storing operating system 144, application programs 145,other program modules 146, and program data 147. Note that thesecomponents can either be the same as or different from operating system134, application programs 135, other program modules 136, and programdata 137. The operating system 144, the application programs 145, theother program modules 146, and the program data 147 are given differentnumeric identification here to illustrate that, at a minimum, they aredifferent copies.

A user may enter commands and information into the computing system 110through input devices such as a keyboard 162, a microphone 163, and apointing device 161, such as a mouse, trackball or touch pad or touchscreen. Other input devices (not shown) may include a joystick, gamepad, scanner, or the like. These and other input devices are oftenconnected to the processing unit 120 through a user input interface 160that is coupled with the system bus 121, but may be connected by otherinterface and bus structures, such as a parallel port, game port or auniversal serial bus (USB). A monitor 191 or other type of displaydevice is also connected to the system bus 121 via an interface, such asa video interface 190. In addition to the monitor, computers may alsoinclude other peripheral output devices such as speakers 197 and printer196, which may be connected through an output peripheral interface 190.

The computing system 110 may operate in a networked environment usinglogical connections to one or more remote computers, such as a remotecomputer 180. The remote computer 180 may be a personal computer, ahand-held device, a server, a router, a network PC, a peer device orother common network node, and typically includes many or all of theelements described above relative to the computing system 110. Thelogical connections depicted in FIG. 1 include a local area network(LAN) 171 and a wide area network (WAN) 173 but may also include othernetworks. Such networking environments are commonplace in offices,enterprise-wide computer networks, intranets and the Internet.

FIG. 1 includes a local area network (LAN) 171 and a wide area network(WAN) 173 but may also include other networks. Such networkingenvironments are commonplace in offices, enterprise-wide computernetworks, intranets and the Internet.

When used in a LAN networking environment, the computing system 110 maybe connected to the LAN 171 through a network interface or adapter 170.When used in a WAN networking environment, the computing system 110typically includes a modem 172 or other means for establishingcommunications over the WAN 173, such as the Internet. The modem 172,which may be internal or external, may be connected to the system bus121 via the user-input interface 160, or other appropriate mechanism. Ina networked environment, program modules depicted relative to thecomputing system 110, or portions thereof, may be stored in a remotememory storage device. By way of example, and not limitation, FIG. 1illustrates remote application programs 185 as residing on remotecomputer 180. It will be appreciated that the network connections shownare exemplary and other means of establishing a communications linkbetween the computers may be used.

It should be noted that some implementations may be carried out on acomputing system such as that described with respect to FIG. 1 .However, some implementations may be carried out on a server, a computerdevoted to message handling, handheld devices, or on a distributedsystem in which different portions of the present design may be carriedout on different parts of the distributed computing system.

Another device that may be coupled with the system bus 121 is a powersupply such as a battery or a Direct Current (DC) power supply) andAlternating Current (AC) adapter circuit. The DC power supply may be abattery, a fuel cell, or similar DC power source needs to be rechargedon a periodic basis. The communication module (or modem) 172 may employa Wireless Application Protocol (WAP) to establish a wirelesscommunication channel. The communication module 172 may implement awireless networking standard such as Institute of Electrical andElectronics Engineers (IEEE) 802.11 standard, IEEE std. 802.11-1999,published by IEEE in 1999.

Examples of mobile computing systems may be a laptop computer, a tabletcomputer, a Netbook, a smart phone, a personal digital assistant, orother similar device with on board processing power and wirelesscommunications ability that is powered by a Direct Current (DC) powersource that supplies DC voltage to the mobile computing system and thatis solely within the mobile computing system and needs to be rechargedon a periodic basis, such as a fuel cell or a battery.

FIG. 2 shows a diagram of an example network environment that may beused with some implementations. Diagram 200 includes computing systems290 and 291. One or more of the computing systems 290 and 291 may be amobile computing system. The computing systems 290 and 291 may beconnected to the network 250 via a cellular connection or via a Wi-Firouter (not shown). The network 250 may be the Internet. The computingsystems 290 and 291 may be coupled with server computing systems 255 and256 via the network 250.

The server computing system 255 (also referred to as an entity server)may be coupled with database 270 and may be associated with an entity.The entity may be an organization or a business that has legallycollected and stored personal information from many consumers. Forexample, CCPA Section 1798.140(c)(1) defines a business as a soleproprietorship, partnership, limited liability company, corporation,association, or other legal entity that is organized or operated for theprofit or financial benefit of its shareholders or other owners thatcollects consumers' personal information or on the behalf of which thatinformation is collected and that alone, or jointly with others,determines the purposes and means of the processing of consumers'personal information, that does business in the State of Californiawithin certain thresholds.

Each of the computing systems 290 and 291 may include an applicationmodule such as module 208 or 214. For example, a user may use thecomputing system 290 and the application module 208 (e.g., browserapplication) to login to a web application 260 hosted by the entityserver 255. The user may engage in transactions with the web application260 and may provide consent to enable personal information of the userto be collected by the web application 260. The personal information maybe stored in the database 270. For example, a transaction may be aregistration operation such as when the user registers with the webapplication 260, or the transaction may involve purchase and paymentoperations such as when the user places an item into an online shoppingcart and checks out by paying with a credit card.

The server computing system 256 (also referred to as information privacycompliance server) may be coupled with the entity server 255 and mayinclude information privacy compliance application 257. The informationcompliance application 257 may be configured to operate on behalf of anentity associated with the entity server 255 to enable the entity tostay in compliance with privacy laws. One of the computing systems 290and 291 may be used to initiate a request for personal information tothe entity server 255. For some implementations, the personalinformation request may be received and processed by the informationprivacy compliance server 256. For some implementations, the informationprivacy compliance server 256 may be configured to use a live data mapto generate a verification report in response to the personalinformation request. A live data map may include information aboutsystems that may store the personal information on behalf of an entity.

FIG. 3 shows an example diagram that includes a span of databases orsystems where personal information may be stored, in accordance withsome implementations. Diagram 300 includes an information privacycompliance server 256, an entity server 255 associated with an entity, athird-party server 305 associated with the entity, and a customer 350 ofthe entity.

For some implementations, the entity server 255 may be associated withone or more third-party servers configured to perform services on behalfof the entity. For example, besides being associated with thethird-party server 305, the entity server 255 may also be directly orindirectly associated with the third party-servers 306, 307 and 308. Forexample, the entity server 255 may be associated with the third-partyserver 305, and the third-party server 305 may be associated with thethird-party server 306. One or more connectors 355 may be used toconnect to a third-party server.

The entity server 255 may communicate with, send data to or receive datafrom one or more of the third-party servers 305, 306, 307 and 308. It'spossible that a third-party server is associated with a serviceprovider. For example, the entity may be an online furniture business,and it may be associated with an email marketing service to performmarketing campaign on its behalf. In this example, the furniturebusiness may be associated with the entity server 255, and the emailmarketing service may be associated with the third-party server 305. Theemail marketing service may send marketing emails on behalf of thefurniture business using a list of contacts provided by the furniturebusiness. The list of contacts may be stored in a database (e.g.,database 270) associated with the furniture business. The list ofcontacts may be considered as one set of personal information.

When the customer 350 interacts with an email from the email campaign,the email marketing service may collect personal information about thecustomer 350 including, for example, the device (e.g., IP address, OSinformation, browser information, etc.) used by the customer 350 and theinteraction (e.g., browsing activities, etc.) by the customer 350.Cookies and tracking technologies may be used, and the collectedinformation about the customer 350 may be stored by the email marketingservice in the database 310 on behalf of the furniture business. Theinformation collected by the email marketing service may be consideredanother set of personal information attributed to the furniturebusiness. As such, the personal information collected and stored onbehalf of the furniture business may be stored in the database 270 andin the database 310.

It may be possible that the email marketing service in this example maystore some contact information in its own database, and it may beassociated with a third-party customer relationship management (CRM)system where the contact information may be communicated to the CRMsystem. As a result, it may be possible that personal informationassociated with the customers of an entity may be stored across multipledatabases or database systems, and data discovery operations may need tobe performed to identify where the information is stored so that anaccurate verification report may be provided. For some implementations,the content of the verification report may vary depending on theapplicable law or regulation. For example, according to the CCPA, theverification report may only need to include personal informationcollected by the entity. However, according to the GDPR, theverification report may need to include all personal information inpossession of the entity. For some implementations, when there is achange to the definition of personal information or personal data by thegoverning agency, the verification report may be updated accordingly.Verification requests may be submitted by customers of the entity torequest for the personal information that the entity may have access to.For example, the website of the furniture business may be hosted byanother third-party service, and content of shopping carts of itscustomers may be stored in a database of this other third-party service.The third-party service may be implemented based on a software as aservice (SaaS) platform where the applications and files associated withthe website of the furniture business may be stored on the third-partyserver and associated database.

FIG. 4 shows an example diagram of an information privacy complianceapplication with its data discovery and maintenance functions, inaccordance with some implementations. In diagram 400, the informationprivacy compliance application 257 may be configured to include datadiscovery module 420 and data maintenance module 425.

For some implementations, the data discovery module 420 may beconfigured to determine where the entity stores the personal informationthat it collects from its customers. It may be noted that the entity maystore the information it collects from its customers in more than onelocation. This may include the personal information that is collectedand stored on behalf of the entity by one or more third-party services.The data discovery module 420 may be configured to communicate with theentity server 255 and the third-party server 305.

For some implementations, the data maintenance module 425 may beconfigured to maintain the personal information discovered by the datadiscovery module 420 so that the personal information may becontinuously refreshed. For example, a customer may submit a request tocorrect the personal information that the entity may currently haveabout the customer. The information submitted by the customer may thenbe received and processed by the data maintenance module 425.

FIG. 5A shows an example diagram of a data discovery module with itsthird-party service identifying operations, in accordance with someimplementations. In diagram 500, the data discovery module 420 may beconfigured to include an approved system identifying module 505 and anunapproved system identifying module 510. The approved systemidentifying module 505 may be configured to identify third-partyservices that have been formally approved by the entity and communicatedwith by the entity server 255 (shown in FIG. 3 ). For example, aninformation technology (IT) department of the entity may have reviewedand established an approved list of third-party services that variousgroups in the entity may use. The unapproved system identifying module510 may be configured to determine third-party services that may be usedby the entity and communicated with by the entity server 255, eventhough those services may not have been approved by the entity. Thethird-party services determined by the approved system identifyingmodule 505 and the unapproved system identifying module 510 may begrouped together in an inventory of third-party services associated withthe entity. The inventory may be represented in a live data map 710 (asshown in FIG. 7B).

FIG. 5B shows an example diagram of a data discovery module with itssingle sign on (SSO) system detection operations, in accordance withsome implementations. It may be possible that users (e.g., employees) oran application associated with an entity may use a single sign on (SSO)authentication scheme to sign into multiple independent third-partyservices or systems with a single ID and password. For example, a usermay use a Google SSO to access thousands of pre-integrated apps, both inthe cloud and on-premises, with one click. Google SSO is a product ofGoogle LLC of Menlo Park, Calif. Other examples of SSO include MicrosoftSSO of Microsoft Inc of Redmond, Wash. and Okta SSO of Okta, Inc. of SanFrancisco, Calif. Okta also refers to itself as an identity provider(IdP).

For some implementations, the data discovery module 420 may beconfigured to include an SSO detection module 525 and a procurementdetection module 530, as shown in diagram 550. The SSO detection module525 may be configured to identify the SSOs used by users associated withan entity and to determine the third-party services or systems that eachSSO may be associated with. For example, a user or an applicationassociated with an entity may use an SSO to sign into a third-partysystem and communicate personal information with the third-party system.

The procurement detection module 530 may be configured to determine apayment or procurement systems that may be used by the entity forpayments, payment management or expense management. For the example, anentity may use a payment management system such as Concur from SAPConcur of Bellevue, Wash. or Coupa from Coupa Software Inc. of SanMateo, Calif. When the payment or procurement system is determined, theprocurement detection module 530 may be configured to determine thirdparty services or systems that receives payment from the entity via thepayment or procurement system. For example, a user or an applicationassociated with an entity may communicate personal information to one ormore third-party services that receives payment from the entity via thepayment or procurement system. The third-party services determined bythe SSO detection module 525 and the procurement detection module 530may be added to the inventory of third-party services associated with anentity.

FIG. 5C shows an example diagram of a data discovery module with itsinferring operations, in accordance with some implementations. When thethird-party services or systems are identified using one or more of theoperations described with FIG. 5A and FIG. 5B, the inference detectionmodule 535 may be configured to determine additional third-partyservices or systems by inferring, as shown in diagram 575. For someimplementations, when the inferring detection module 535 determines thatone third-party service associated with an entity communicates withanother third-party service not yet known to be associated with theentity, the inference detection module 535 may conclude that boththird-party services belong in the inventory of third-party servicesassociated with the entity.

For some implementations, a combination of discovery techniques may beused by the inference detection module 535 to enumerate what othersystems a third-party system may communicate and exchange data with. Thediscovery techniques may be customized per third-party system and mayinclude using application programming interface (API) made available bya third-party system. For example, some third-party systems such asSalesforce, may provide direct API support to enable enumerating whatplugins (e.g., applications, packages) are installed in a particularinstance. Thus, when a package named DiscoverOrg is discovered,inferences may be made that contact data may be exchanged withDiscoverOrg system by the entity. DiscoverOrg is a B2B contact leadcompany in Vancouver, Wash. The discovery techniques may also includeexamining data that is present in a third-party system and makinginferences about other systems. Some third-party systems such as, forexample, Salesforce (of San Francisco, Calif.), Marketo (of San Mateo,Calif.), and Hubspot (of Cambridge, Mass.) have objects which are acollection of named fields. The object may correspond to a user. Thefields may be named descriptively to enable detection of otherthird-party systems. For example, with Salesforce, when a field is namedDSCORGPKG_Company_HQ_Address_c, the inference detection module 535 maymap that to a field created by a package named DSCORGPKG. The inferencedetection module 535 may also maintain a map of known package names tocompanies (e.g., Salesforce, Marketo, Hubspot, DiscoverOrg). Forexample, a package named DISCOERPKG corresponds to the companyDiscoverOrg. Thus, when the inference detection module 535 discoversthat a third-party system such as Salesforce communicates with a servicenamed DiscoverOrg, an inference can be made that Salesforce may sendpersonal data to and receive personal data from a DiscoverOrg system.Similarly, when the inference detection module 535 discovers that athird-party system such as Salesforce communicates with a serviceassociated with Marketo, an inference can be made that Salesforce maysend personal data to and receive personal data from a Marketo system.

For some implementations, the inference may be made based on acombination of field names and field contents. For example, when theinference detection module 535 discovers a field on a user object namedsomething like “webinar”, inference may be made that there is trackingof webinar attendance. In addition, when examining field values, theinference detection module 535 may be able to determine which webinarsystem (e.g., BrightTalk of San Francisco, Calif.) is used to providethe webinar.

For some implementations, the inference detection module 535 may beconfigured to examine log files available in a third-party system andmake inferences about other third-party systems. The inference detectionmodule 535 may also examine any other available data in a third-partysystem and make inferences about other systems. It may be noted thatpermission may be granted in order for the inference detection module535 to use the API and to examine data to make the necessary inferences.

FIG. 6 shows an example diagram of a discovery module with its taxonomymapping operations, in accordance with some implementations. When thethird-party services associated with an entity have been identified, itmay be necessary to determine whether the information communicated withthe third-party services includes personal information. As shown indiagram 600, the determination may be performed by the personalinformation identifying module 605. It may be noted that operations ofthe personal information identifying module 605 may be dependent atleast on how the personal information is defined by the currentcontrolling regulation related to information privacy. For example, inCalifornia, the current controlling regulation is the CCPA that wassigned into law on Jun. 28, 2018 and went into effect on Jan. 1, 2020.The operations of the personal information identifying module 605 mayalso be configured based on customer policies and risk toleranceacceptable by the customer. Once the information communicated with athird-party service is determined to include personal information, theinformation may be mapped using a taxonomy. This mapping operations maybe performed by the taxonomy mapping module 610. For example, theinformation may include multiple datums, and one datum may be mapped toan IP address, another datum may be mapped to an email address, andanother datum may be mapped to a GPS coordinate. It may be possiblethat, over time, the information communicated with a third-party servicemay change, and an existing mapping of a datum may need to be updated.When such a change occurs, the personal information identifying module605 may be configured to communicate the change to the taxonomy mappingmodule 610 so the mapping can be updated. For example, a second datum ina data set may no longer reflect IP address but instead reflect atelephone number.

FIG. 7A shows an example diagram of a discovery module with live datamapping operations, in accordance with some implementations. As shown indiagram 700, live data mapping module 705 may be configured to generateand maintain a live data map 710 for an entity. The live data map mayinclude information about where the entity and its associatedthird-party services may store personal information of customers of theentity. The live data mapping module 705 may be configured to generateand maintain a live data map for each of the entities that theinformation privacy compliance server 256 (shown in FIG. 3 ) isassociated with. For example, the live data map 710 may be associatedwith one entity, and the live data map 715 may be associated withanother entity.

The live data mapping module 705 may be configured to receiveinformation discovered by the modules described with FIGS. 5A, 5B and5C. The live data mapping module 705 may be configured to keep the livedata maps 710, 715 updated as changes occur. Keeping the live data maps710, 715 updated may help save time searching for the personalinformation to respond to verification requests. Keeping the live datamaps 710, 175 updated may also help providing accurate verificationreports. In addition, keeping the live data maps 710, 715 updated mayhelp providing necessary disclosures per relevant laws.

The data discovery module 420 may be configured to use connectors (e.g.,connector 355 shown in FIG. 3 ) to access personal information that maybe stored in the third-party systems. A connector may be configured toprovide a range of functionality including discovery of personalinformation and performing an access/deletion/update of personalinformation stored in a third-party server or system. A connector mayalso be configured to perform discovery of what other servers or systemsa third-party server may integrate or communicate with. A connector mayalso be configured to determine data lineage of certain information(e.g., where the information come from if the information came fromanother system).

A connector may be configured to communicate via APIs directly todatabases (or database-like systems) associated with third-partysystems. There may be a connector for a third-party system, and theremay be a connector for systems maintained by the entity.

A connector may also be configured to provide a layer of intelligence ontop of the APIs and databases. For example, the connector 355 configuredto connect to a third-party system (e.g., a system associated withMarketo, Inc. of San Mateo, Calif.) not only uses the APIs but may alsoinfers what other systems Marketo integrates with. The inference may beperformed by using a combination of APIs that don't directly provide theinformation to find the personal information. A connect may beconfigured to connect to various databases and infer where the personalinformation may be stored.

For some implementations, the data discovery module 420 may beassociated with multiple connectors to communicate with multipledifferent third-party systems. For example, there may be one or morepre-built connector each for third-party system such as Okta,Salesforce, Marketo, Mailchimp and Hubspot. The data discovery module420 may use the multiple connectors to determine where a third-partysystem stores personal information of customers of an entity.

FIG. 7B shows an example live data map, in accordance with someimplementations. As shown in diagram 750, the live data map 710 mayinclude information about third-party systems associated with an entity.In the current example, the third-party systems may include Okta,Marketo, NoreDink, AWS and MailChimp. The live data map 710 may includeconnection status information for each third-party system to indicatewhether a connection is active or not active. The live data map 710 mayinclude information to indicate whether personal information is found ina third-party system and the type of function or service that thethird-party system offers. It may be noted that the live data map mayalso be configured to include other details relating to the personalinformation if the personal information is found stored by a third-partysystem. For example, the live data map may show the types of personalinformation found.

FIG. 8A is an example flow diagram of one process that may be used toidentify third-party systems, in accordance with some implementations.The process shown in diagram 800 may be related to FIGS. 5A, 5B, 5C, 6,7A and 7B and associated description. The process may be performed byone or more of the modules included in the data discovery module 420 toidentify third-party systems associated with an entity with regard topersonal information and information privacy.

At block 805, approved and unapproved third-party systems associatedwith an entity may be identified. Information about these third-partysystems may be added to an inventory of all third-party systemsassociated with the entity.

At block 810, the third-party systems associated with all single sign on(SSO) credential used by members or applications of the entity may beidentified. Information about these third-party systems may be added tothe inventory of all third-party systems associated with the entity.

At block 815, the third-party systems associated with transactions of apayment system used by the entity may be identified. Information aboutthese third-party systems may be added to the inventory of allthird-party systems associated with the entity.

At block 820, inference may be used to identify third-party systemsassociated with each existing third-party system. For example, when onethird-party system communicates with another third-party system, it maybe inferred that both systems may exchange personal information.Information about these third-party systems may be added to theinventory of all third-party systems associated with the entity. It maybe possible that the discovery of a third-party system may continue froma previously unknown third-party system. This may be performedrepeatedly. For example, when a previously unknown third-party system“X” is discovered, the operations of block 820 may examine the datawithin the third-party system “X” and may potentially discover athird-party system “Y”, and from the third-party system “Y”, athird-party system “Z” may be discovered.

At block 825, the inventory of all the third-party systems associatedwith the entity may be used to generate a live data map. An example of alive data map is described with FIG. 7B. It may be possible that not allof the third-party systems included in a live data map may includepersonal information as related to information privacy.

FIG. 8B is an example flow diagram of a process that may be used withfactors to infer third-party systems, in accordance with someimplementations. The process shown in diagram 850 may be related to FIG.5C and associated description. The process may be performed by theinference detection module 535.

At block 855, inference about a third-party system may be made based onavailable API support. For example, when a plugin or package (such asDiscoverOrg package) associated with a third-party system is supportedor used by an entity server (e.g., entity server 255 shown in FIG. 3 ),an inference can be made that the entity uses the service and exchangesdata with the third-party system.

At block 860, inference about a third-party system may be made based onnamed fields. For example, when an object includes a named field such asDiscoverOrg_Company_HQ_Address, then an inference can be made thatcommunication and data exchange may exist with a third-party systemassociated with DiscoverOrg.

At block 865, inference about a third-party system may be made based oncontent of a named field. For example, when a content of a named fieldincludes a name of a third-party service, then an inference can be madethat communication and data exchange may exist with a third-party systemassociated with that service.

At block 870, inference about a third-party system may be made based onexamining audit logs. For example, when an audit log indicatessynchronization occurs with a third-party system, then an inference canbe made that communication and data exchange may exist with thethird-party system. It may be noted that, even when an inference is madeabout a third-party system, operations may still need to be performed bythe personal information identifying module 605 (shown in FIG. 6 ) toverify whether personal information is exchanged with the third-partysystem.

FIG. 8C is an example flow diagram of an inferring process, inaccordance with some implementations. The process shown in diagram 875may be performed by the information privacy compliance server 256 (shownin FIG. 3 ). At block 880, data may be received from a first computersystem which has been verified to store personal information associatedwith a customer of an entity. At block 884, a second computer system maybe associated with the entity based on the first computer systemreferring to the second computer system. For example, data may bediscovered from the first computing system showing that the firstcomputing system uses an API to communicate with the second computingsystem. At block 890, a live data map associated with the entity may begenerated, the live data map including information about the first andsecond computing systems. At block 894, the live data map may beconfigured to indicate whether the first computing system and the secondcomputing system includes personal information of customers of theentity. The live data map may then be used to generate the verificationreports.

These and other aspects of the disclosure may be implemented by varioustypes of hardware, software, firmware, etc. For example, some featuresof the disclosure may be implemented, at least in part, bymachine-program product that include program instructions, stateinformation, etc., for performing various operations described herein.Examples of program instructions include both machine code, such asproduced by a compiler, and files containing higher-level code that maybe executed by the computer using an interpreter. Examples ofmachine-program product include, but are not limited to, magnetic mediasuch as hard disks, floppy disks, and magnetic tape; optical media suchas CD-ROM disks; magneto-optical media; and hardware devices that arespecially configured to store and perform program instructions, such asread-only memory devices (“ROM”) and random access memory (“RAM”).

While one or more implementations and techniques are described withreference to an implementation in which a service cloud console isimplemented in a system having an application server providing a frontend for an on-demand database service capable of supporting multipletenants, the one or more implementations and techniques are not limitedto multi-tenant databases nor deployment on application servers.Implementations may be practiced using other database architectures,i.e., ORACLE®, DB2® by IBM and the like without departing from the scopeof the implementations claimed.

Any of the above implementations may be used alone or together with oneanother in any combination. Although various implementations may havebeen motivated by various deficiencies with the prior art, which may bediscussed or alluded to in one or more places in the specification, theimplementations do not necessarily address any of these deficiencies. Inother words, different implementations may address differentdeficiencies that may be discussed in the specification. Someimplementations may only partially address some deficiencies or just onedeficiency that may be discussed in the specification, and someimplementations may not address any of these deficiencies.

While various implementations have been described herein, it should beunderstood that they have been presented by way of example only, and notlimitation. Thus, the breadth and scope of the present applicationshould not be limited by any of the implementations described herein butshould be defined only in accordance with the following andlater-submitted claims and their equivalents.

What is claimed is:
 1. A computer-implemented method for discoveringdata related to information privacy, the method comprising: receiving,by a server computing system, data from a first computing systemassociated with an entity, the first computing system storing personalinformation of customers of the entity; discovering, by the servercomputing system, a second computing system based on the data from thefirst computing system referencing the second computing system;determining, by the server computing system, whether the secondcomputing system stores the personal information of the customers of theentity; associating, by the server computing system, the secondcomputing system with the entity; generating or updating, by the servercomputing system, a live data map associated with the entity to identifythe first computing system and the discovered second computing systemand include at least information about whether the first computingsystem and the second computing system store the personal information ofthe customers of the entity; and providing data map data to a device,the data map data configured to be processed to display or update apresentation of the live data map.
 2. The method of claim 1, furthercomprising: analyzing, by the server computing system, the data from thefirst computing system to identify a reference to the second computingsystem.
 3. The method of claim 2, wherein analyzing the data from thefirst computing system comprises determining whether the data from thefirst computing systems references an application programming interface(API) that enables the first computing system to communicate with thesecond computing system.
 4. The method of claim 2, wherein analyzing thedata from the first computing system comprises determining whether thedata from the first computing system references a named serviceassociated with the second computing system.
 5. The method of claim 4,wherein determining whether the data from the first computing systemreferences a named service associated with the second computing systemis based on one or more of a field name or a field content.
 6. Themethod of claim 2, wherein the data from the first computing systemincludes an audit log, and wherein analyzing the data from the firstcomputing system comprises determining whether the audit log referencescommunication between the first computing system and the secondcomputing system.
 7. The method of claim 1, wherein updating, by theserver computing system, the live data map comprises reflecting a changeto the information about whether the first computing system and thesecond computing system store the personal information.
 8. The method ofclaim 1, further comprising: sending a notification to a client device,the notification indicating that the second computing system has beendiscovered.
 9. The method of claim 1, wherein the live data map isfurther configured to include information about one or more of: whetherpersonal information has been found, whether one or more secondcomputing systems are connected, or one or more functions of the one ormore second computing systems.
 10. The method of claim 1, wherein thefirst computing system is verified to store personal information ofcustomers of an entity.
 11. The method of claim 1, further comprising:generating, by the server computing system, verification reportsassociated with the entity based on the live data map.
 12. The method ofclaim 1, further comprising: automating a privacy request associatedwith the personal information of the customers of the entity, theprivacy request associated with privacy compliance and actionablegovernance.
 13. The method of claim 1, wherein the live data map isfurther configured to include information about data subjects andowners.
 14. The method of claim 1, wherein the entity is a company, andthe personal information is stored within one or more data systems ofthe company.
 15. The method of claim 1, wherein the entity is anorganization, and the live data map is configured to provide managementof a data inventory of the organization.
 16. The method of claim 1,wherein discovering the second computing system is performed using, atleast in part, one or more connected plugins.
 17. A system fordiscovering data related to information privacy comprising: one or moreprocessors; and a non-transitory computer readable medium storing aplurality of instructions, which when executed, cause the one or moreprocessors of a server computing system to: process data from a firstcomputing system associated with an entity, the first computing systemstoring personal information of customers of the entity; discover asecond computing system based on the data from the first computingsystem referencing the second computing system; determine whether thesecond computing system stores the personal information of the customersof the entity; associate the second computing system with the entity;generate or update a live data map associated with the entity toidentify the first computing system and the discovered second computingsystem and include at least information about whether the firstcomputing system and the second computing system store the personalinformation of the customers of the entity; and provide data map data toa device, the data map data configured to be processed to display orupdate a presentation of the live data map.
 18. The system of claim 17,further comprising instructions to: analyze the data from the firstcomputing system to identify a reference to the second computing system.19. The system of claim 18, wherein analyzing the data from the firstcomputing system comprises determining whether the first computingsystems references an application programming interface (API) thatenables the first computing system to communicate with the secondcomputing system.
 20. The system of claim 18, wherein analyzing the datafrom the first computing system comprises determining whether the datafrom the first computing system references a named service associatedwith the second computing system.
 21. The system of claim 20, whereinthe determining whether the data from the first computing systemreferences a named service associated with the second computing systemis based on one or more of a field name or a field content.
 22. Thesystem of claim 18, wherein the data from the first computing systemincludes an audit log, and wherein analyzing the data from the firstcomputing system comprises determining whether the audit log referencescommunication between the first computing system and the secondcomputing system.
 23. The system of claim 17, wherein updating the livedata map comprises reflecting a change to the information about whetherthe first computing system and the second computing system store thepersonal information.
 24. The system of claim 17, further comprisinginstructions to: send a notification to a client device, thenotification indicating that the second computing system has beendiscovered.
 25. The system of claim 17, wherein the live data map isfurther configured to include information about one or more of: whetherpersonal information has been found, whether one or more secondcomputing systems are connected, or one or more functions of the one ormore second computing systems.
 26. The system of claim 17, wherein thefirst computing system is verified to store personal information ofcustomers of an entity.
 27. The system of claim 17, further comprisinginstructions to: generate verification reports associated with theentity based on the live data map.
 28. The system of claim 17, furthercomprising instructions to: automate a privacy request associated withthe personal information of the customers of the entity, the privacyrequest associated with privacy compliance and actionable governance.29. The system of claim 17, wherein the live data map is furtherconfigured to include information about data subjects and owners. 30.The system of claim 17, wherein the entity is a company, and thepersonal information is stored within one or more data systems of thecompany.
 31. The system of claim 17, wherein the entity is anorganization, and the live data map is configured to provide managementof a data inventory of the organization.
 32. The system of claim 17,wherein discovering the second computing system is performed using, atleast in part, one or more connected plugins.
 33. A computer programproduct for discovering data related to information privacy, thecomputer program product comprising a non-transitory computer-readablemedium storing computer-readable program code to be executed by one ormore processors, the program code comprising instructions to: processdata from a first computing system associated with an entity, the firstcomputing system storing personal information of customers of theentity; discover a second computing system based on the data from thefirst computing system referencing the second computing system;determine whether the second computing system stores the personalinformation of the customers of the entity; associate the secondcomputing system with the entity; generate or update a live data mapassociated with the entity to identify the first computing system andthe discovered second computing system and include at least informationabout whether the first computing system and the second computing systemstore the personal information of the customers of the entity; andprovide data map data to a device, the data map data configured to beprocessed to display or update a presentation of the live data map. 34.The computer program product of claim 33, further comprisinginstructions to: analyze the data from the first computing system toidentify a reference to the second computing system.
 35. The computerprogram product of claim 34, wherein analyzing the data from the firstcomputing system comprises determining whether the first computingsystems references an application programming interface (API) thatenables the first computing system to communicate with the secondcomputing system.
 36. The computer program product of claim 34, whereinanalyzing the data from the first computing system comprises determiningwhether the data from the first computing system references a namedservice associated with the second computing system.
 37. The computerprogram product of claim 36, wherein determining whether the data fromthe first computing system references a named service associated withthe second computing system is based on one or more of a field name or afield content.
 38. The computer program product of claim 34, wherein thedata from the first computing system includes an audit log, and whereinanalyzing the data from the first computing system comprises determiningwhether the audit log references communication between the firstcomputing system and the second computing system.
 39. The computerprogram product of claim 33, wherein updating the live data mapcomprises reflecting a change to the information about whether the firstcomputing system and the second computing system store the personalinformation.
 40. The computer program product of claim 33, furthercomprising instructions to: send a notification to a client device, thenotification indicating that the second computing system has beendiscovered.
 41. The computer program product of claim 33, wherein thelive data map is further configured to include information about one ormore of: whether personal information has been found, whether one ormore second computing systems are connected, or one or more functions ofthe one or more second computing systems.
 42. The computer programproduct of claim 33, wherein the first computing system is verified tostore personal information of customers of an entity.
 43. The computerprogram product of claim 33, further comprising instructions to:generate verification reports associated with the entity based on thelive data map.
 44. The computer program product of claim 33, furthercomprising instructions to: automate a privacy request associated withthe personal information of the customers of the entity, the privacyrequest associated with privacy compliance and actionable governance.45. The computer program product of claim 33, wherein the live data mapis further configured to include information about data subjects andowners.
 46. The computer program product of claim 33, wherein the entityis a company, and the personal information is stored within one or moredata systems of the company.
 47. The computer program product of claim33, wherein the entity is an organization, and the live data map isconfigured to provide management of a data inventory of theorganization.
 48. The computer program product of claim 33, whereindiscovering the second computing system is performed using, at least inpart, one or more connected plugins.